// 1. 安装 npm i express
// 2.引入
const express = require('express');
// 3 调用我们引入后的返回值
const app = express();


// 中间件
app.use((req, res, next) => {
    console.log('我是全局中间件,判断是否登录');
    let isLogin = true;
    if (isLogin) {  // 登录就可以进行下一步操作
        next();  
    } else {
        // 没登录
        res.status(500).send('没有权限访问');
        return
    }
})

app.use('/index', (req, res, next) => {
    console.log('我是/index中间件');
    next(); // 进行下一步处理 默认情况下不会执行 如果需要下一步需要手动调用
})

// 如果是get 请求 那么就是 app.get
// 如果是post 请求 那么就是app.post

/* 
    app.get('第一个参数是匹配的路由'，'第二个参数是我们的回调函数（第一个参数是请求参数，第二个参数是响应参数）')
*/
app.get('/index', (req, res) => {

    // 返回值是res.send()//等价于 原生的node res.write()+res.end()
    // send 可以处理任何类型的数据 express 帮我们进行了封装 express 只关心业务
    res.send('index 页面');
})

//可以提前对该路由做任何事情
app.use('/list', (req, res, next) => {
    req.name = '张三';
    next();
})

app.get('/list', (req, res) => {
    res.send(req.name)
})

//引用路由对象 ----专门来管理多级路由

// 1.第一步 引入路由 这个路由本身在express
const homeRouter = express.Router();

// 第二步app 采用use 的写法 中间件的写法
app.use('/homerouter', homeRouter);

homeRouter.get('/admin', (req, res) => {
    res.send('homerouter/ admin 页面');
})

homeRouter.get('/adminList', (req, res) => {
    res.send('homerouter/ adminList 页面');
})


// 4.监听端口
app.listen(3000)